perm filename MSS.F4[1,LCS]2 blob
sn#084617 filedate 1974-01-30 generic text, type T, neo UTF8
C ********** DISPLAYS MUSIC AND DRAWS IT ON THE PLOTTER **********
C *** READS DATA FROM CLFX, TAIL, FERM, BREP, REST, DRAW1, DRAW2
IMPLICIT INTEGER(A-Q,S-Z)
REAL DIS,PWDS,DISX,A,B,STFF,CENTR,POS
COMMON /DL/X22,SAVER,NAME/RRJJ/RJJ(20)
DIMENSION RPOS(2,40),LST(13),DP(-3/4),LX(14),LY(7),R(8,100)
COMMON/FRMT/F78F(1),FA1(1),FA5(1),ASK/SIZ/RSZ,JCEN,KCEN
COMMON/SCM/V(78),ISCR,LCNT,RSTF,LIST(200),REND
COMMON/ALF/INP(72),ML/XRN/RN(4000)/STF/RSTFAC(8),RSTJC
COMMON /PLTR/PLT,RHT,DIS/PTR/PWDS(250),ITEM,L,I,IX
COMMON RJB,JA,CENTR,JB,RJQ(20),JQ(20)/POSI/STFF(8),JJB,POS
COMMON/DPY/ST(4000),WDS(250),MEDIT,GO
EQUIVALENCE (JC,JQ(1)),(JD,JQ(2)),(JE,JQ(3)),(RJE,RJQ(3))
1,(RJF,RJQ(4)),(JG,JQ(5)),(JH,JQ(6)),(JI,JQ(7)),(JJ,JQ(8))
1,(JK,JQ(9)),(JF,JQ(4)),(RJG,RJQ(5)),(RJD,RJQ(2)),(IT,LY(7))
1,(RJC,RJQ(1)),(I2,INP(2)),(I1,INP(1)),(RXGP,WDS(250))
1,(RJK,RJQ(9)),(RJQJ,RJQ(8)),(SET4,RN(3920)),(R,RN(3001))
1 ,(TOP,ST(3999)),(BOT,ST(4000)),(RJH,RJQ(6)),(RJI,RJQ(7))
1,(RPOS(1,1),RN(3921)),(ST2,ST(2)),(IBL,LY(1)),(RJM,RJQ(11))
1,(IE,LX(4)),(IP,LX(10)),(IM,LX(9)),(II,LX(6)),(IS,LX(12))
DATA STFF/-369.0,-246.0,-123.0,0.0,123.0,246.0,369.0,450.0/
1 ,LST/'NOTE','REST','CLEF','LINE','NUMB',
1 'MISC','KSIG','SLUR','BEAM','STAFF','METER','TRILL','WORD'/
1,DP/8*1/,LX/'A','C','D','E','G','I','J','L','M','P','R',
1 'S','U','X'/
1,LY/' ','A','B','D','E','F','T'/
TOP2=-999
RXGP=0
I1=0
C RESTART PROG. OR TYPE 'F' TO FINISH PLOTTER.(IT'S NOT AUTOMATIC.)
2 CALL DPYSET(1,ST,4000)
CALL TYPLOC(-200,-511)
CALL DPYBRT(5)
RPOS(1,1)=0
PLOTIT=0
RSZ=.845
TOP=-999
BOT=999
JSTF=-1
X22=0
JCEN=0
KCEN=0
PLT=0
PWDS(1)=1.
EDX=-1
SAVER=7
DO 1402 K=1,8
1402 RSTFAC(K)=1.
REDIT=999.
M=1
ITEM=0
ZERO=-1
WDS(1)=4
C DATA IN DPY ARRAY STARTS AT WD.4!
I=1
1100 SCORE=-1
1000 IREADX=0
KNT=0
CALL DPYOUT(1)
IF(SCORE.OR.REND)GO TO 58
C REND=-1 LAST TIME IN SCORE SECTION
CALL SCMSS
I=ISC
ITEM=ISITEM
ST2=WDS(ITEM+1)
CALL ACCPOG(1)
IF(REND.NE.100)GO TO 553
C FOR ESCAPE FROM 'SCORE' SECTION
GO TO 1100
58 GO=-1
GO TO 5505
11 CALL NOTWRT
57 IF(PLT)GO TO 6120
IF(M.LE.I.AND.GO)CALL DPYOUT(1)
IF(JA.EQ.101)GO TO 5531
ITEM=ITEM+1
IF(GO.GT.0)GO TO 20000
K=ST2
IF(X22.EQ.0)GO TO 20000
CALL BOX(IBOX,RBOX,STFF)
ST2=K
20000 WDS(ITEM+1)=ST2
IF(EDX.NE.-1.AND.M.LT.I)GO TO 6120
IF(PLOTIT.EQ.-2)GO TO 2311
C SL=SAVE AFTER RESETTING LENGTH OF PAGE. (SEE I2 IN SCX)
PWDS(ITEM+1)=I
PLT=0
IF(GO.NE.0)GO TO 5531
CALL DPYOUT(1)
GO=-1
5531 IF(IREADX.EQ.-2)GO TO 653
IF(JSTF)GO TO 55
JA=JSTF
JSTF=-1
GO TO 889
C PUT IN A STAFF
55 IF(IREADX.OR.SCORE.EQ.0)GO TO 553
5505 SVST=ST2
C CATCHES TYPO WITH 'C'
K=ITEM+1
IF(X22.EQ.0)GO TO 5503
K=X22
L=RN(MEDIT+1)
IF(L.EQ.16)L=13
IF(L.EQ.18)L=11
IF(L.EQ.30)L=12
IF(L.EQ.11)L=0
C CHANGE CODE NUMS FOR 18 AND 30 ****************
TYPE 427,LST(L),(RN(L),L=MEDIT+1,MEDIT+3)
IF(YED.LT.2)GO TO 5500
C YED IS SET AT 426
5502 DO 5501 L=4,YED+2
5501 TYPE 4271,L,RN(MEDIT+L)
GO TO 5500
891 DEL=0
C THIS NOT USED IF DEL=0 AT LN32510 ***********
GO TO 6531
5503 CALL HYDPOG(3)
C TO DELETE VERTICAL LINE (55)
KED=0
5500 IF(DEL)GO TO 891
IF(IREADX)GO TO 653
5504 IF(I1.EQ.IP)GO TO 2311
59 TYPE 56,NAME,K,SVST
JAB=JA
SCORE=-1
ACCEPT 89,INP
DO 1313 LKX=1,14
1313 IF(I1.EQ.LX(LKX))GO TO 2313
LKX=0
2313 LKX=LKX+1
C 'SA'=SAVE; 'S'=SET; 'SB'=SAVE BIG; 'ST'=STAFF;
IF(X22.NE.0)GO TO(87,884,883,883,5313,87,884,87,883,87,59,883
1,15,883,883),LKX
GO TO(87,13,7555,14,5313,120,884,7555,883,7555,311,883,15,883
1,59),LKX
C A C D E G I J L M P R S U(X
C HERE A=ALTER A GROUP, DE=DELETE A GROUP
C 'DP'=DISPLAY OR HIDE WHICH STAVES. D=DOWN N
14 IF(I2-IE)883,13,884
13 GO=1
CALL GRED
IF(JA.EQ.98)GO TO 5533
KNT=0
SCORE=0
GO TO 65
15 DO 3313 LKY=1,7
3313 IF(I2.EQ.LY(LKY))GO TO(312,3121,3121,3121,312,115,884),LKY
C BL A B D E F T
C 'SF'= SAVE AND FIXUP (I HOPE THIS IS TEMPORARY)
115 CALL FIXUP
GO TO 5505
C RESETS FACTORS FOR SAVE AND REDISPLAY
3121 IF(X22.NE.0)GO TO 5505
SAVER=7
CALL SAVIT
GO TO 5505
312 JA=55
RJB=RN(MEDIT+2)
RJC=55.
GO TO 6531
C ABOVE FOR 'S'ET ALIGNMENT
C 'S'=SET ALIGNMENT, 'A'=ALIGN IT. 'M'=MOVER 'C'= COPIER
C 'E'=EDIT; 'I'=ITEM; 'G'=GET; 'GM'=GET MORE; 'P' #S = PLOT IT
5313 K=-1
DO 882 JA=3,10
882 IF(INP(JA).NE.IBL)GO TO 884
GO TO 883
885 FORMAT(A2,21F)
884 REREAD 885,K,RJB,RJQ
JA=55
IF(I1.EQ.II)JA=22
IF(I2.EQ.IT)JA=44
IF(I2.NE.'P')GO TO 6531
IF(RJB.GT.5)GO TO 1886
C GO BACK AND RESET ALL
K=RJB
JA=0
C USE '5' FOR STAFF 0.
888 IF(K.EQ.5)K=0
DP(K)=-DP(K)
JA=JA+1
K=RJQ(JA)
IF(K.EQ.0)GO TO 85
C JUMP OUT IF RJQ(JA)=0
GO TO 888
C TO GET BACK ALL LINES TYPE 6+
311 JA=0
ML=0
IF(I2.NE.'X')GO TO 884
1886 DO 2886 K=-3,4
2886 DP(K)=1
IF(I1.NE.IP)GO TO 8851
C PXG OR PXC RESETS 'DP'
C TO GET BACK OTHERS - 'DPY N' AGAIN WILL DO.
2311 CALL PLTCMD
IF(PLOTIT.EQ.0)GO TO 3005
I1=IP
PLOTIT=-1
GO TO 6531
C 'PXG' OR 'PXC' GOES TO 'PLOT COMMAND' ROUTINE
881 IF(I1.GT.0)GO TO 87
C JUMP IF I1 IS NOT A LETTER (K>0=NUM, K<0=LET.)
883 IF(I2.EQ.IS)GO TO 2
C TYPE 'RS' TO RESTART.
IF(IX.EQ.I.AND.I1.EQ.'C')GO TO 72
CALL EDIT(JJA,RJJB)
GO TO 6531
89 FORMAT(72A1)
C TYPE L, R, U OR D OR EDIT TO MOVE LAST ENTERED ITEM.
87 REREAD 1,JA,RJB,RJQ
IF(K)JA=55
C ED 47 -1 = 55 47 -1, ETC.
IF(JA.EQ.101)GO TO 11
IF(JA.GT.0)SAVER=SAVER-1
IF(SAVER.AND.X22.EQ.0)CALL SAVIT
C SAVES EVERY 7TH TIME AROUND
IF(JA.EQ.14.OR.JA.EQ.16.OR.JA.EQ.144)GO TO 88
GO TO 6531
188 RJB=0
88 RSTJC=RSTFAC(JC+4)
SET4=RJB
C SET4 IS NEG. FOR AUTOMATIC STAFF 4 SETUP.
IF(JA.NE.14)GO TO 889
C NEXT PUTS UP STAFF IF IT WASN'T THERE ALREADY
SAVER=-1
DO 1889 K=1,I
J=PWDS(K)
IF(RN(J+1).NE.10)GO TO 1889
IF(RN(J+3).EQ.RJC)GO TO 889
1889 CONTINUE
C DIDN'T FIND THIS STAFF
JSTF=JA
JA=10
GO TO 6531
889 SCORE=0
ISC=I
ISITEM=ITEM
C RETAINS ORIGINS OF SCORE SQUENCE
CC DO 9532 K=1,8
DO 9532 L=3001,3800
9532 RN(L)=0
C CLEARS R( , ) ARRAY
REND=0
RSTF=RJC
R(1,1)=JA
R(2,1)=RJB
R(3,1)=RJD
R(4,1)=RJE
R(5,1)=RJF
KNT=0
9533 CALL SCMSS
IREADX=-1
IF(REND)GO TO 653
553 IF(SCORE)GO TO 6531
65 GO=1
C SO DPYOUT COMES ONLY ONE PER LINE.
653 KNT=KNT+1
C NUM OF ITEMS IN LIST
RJK=0
RJQJ=0
RJI=0
JA=R(1,KNT)
RJB=R(2,KNT)
IF(JA.NE.100)GO TO 550
IF(REND.NE.1.)GO TO 1000
C =1 GOES BACK FOR MORE
KNT=0
IF(RJB.LT.0)GO TO 188
C WILL READ ANOTHER STAFF
GO TO 1100
C 100 STOPS READER.
550 DO 7531 K=1,6
7531 RJQ(K)=R(K+2,KNT)
IF(RJG.EQ.1.9)RJQJ=1
C FOR GRACE NOTE SLASH
CC RJI=AMOD(RJC,1.)
IF(JA.EQ.9)GO TO 16
IF(JA.NE.999)GO TO 6531
C 999 MEANS P9 AND P10 ARE USED WITH BEAMS
JA=9
RJQ(8)=R(3,KNT)
RJI=R(2,KNT)
RJB=RJJB
RJC=RJJ(1)
16 RJK=-1
6531 M=1
EDX=-1
IF(JA.EQ.222)GO TO 72
IF(JA.EQ.2222)GO TO 73
DO 5532 K=1,10
5532 JQ(K)=RJQ(K)
IF(JA.NE.99.AND.JA.NE.98)GO TO 7542
CALL DELETE
IF(JA.EQ.99)GO TO 425
5533 X22=0
GO=-1
CALL DPYNEW
GO TO 55
590 IF(PLOTIT.EQ.-1)GO TO 121
I1=0
GO TO 243
C GOES TO PLOTTER
7542 IF(I1.EQ.'P')GO TO 590
C X22= ITEM# WHEN EDITING OR DELETING.
IF(X22.NE.0)GO TO 5511
IF(JA.GT.0)GO TO 155
IF(RJB.NE.0)GO TO 6221
C FOR UP, DOWN, LEFT, RIGHT
GO TO 5505
C GOES BACK IF NEGATIVE AND NOT IN EDIT MODE.
155 IF(JA.EQ.24)GO TO 24
IF(JA.EQ.22)GO TO 42
IF(JA.EQ.44)GO TO 44
IF(JA.EQ.55)GO TO 554
IF(JA.EQ.333)GO TO 6333
IF(IABS(JC).GT.5.OR.(IABS(JD).GT.50.AND.JA.GT.4.AND.
1 JA.NE.9.AND.JA.NE.10))GO TO 5505
C CATCHES SOME TYPO ERRORS IN P3 AND P4.
C AVOIDS EXIT AFTER TYPO ERROR
IF(JA.EQ.21.OR.JA.EQ.19)GO TO 61
GO TO 60
33 JB=RJB
RJB=RJJ(JB-2)
IF(JB.EQ.2)RJB=RJJB
TYPE 1,JB,RJB
C TYPE 33,N TO SEE FULL CONTENTS OF PARAM. N.
GO TO 5505
24 GO=0
IF(ABS(RJB).GT.99)GO TO 5505
IF(RJB.NE.0)GO TO 241
GO=-1
243 RJB=1.
C TO REDISPLAY WITH MAGNIFICATION - OR JUST RUN THROUGH DATA.
241 RSZ=.845*RJB
JCEN=RJC*RSZ
KCEN=RJD*RSZ
RJB=0
RJC=0
RJD=0
TOP=-999
BOT=999
85 M=1
I=PWDS(ITEM+1)
ITEM=0
8552 ST2=3
8852 PLT=1
EDX=0
CALL ACCPOG(1)
IF(JA.NE.24)GO=0
GO TO 6120
6333 CALL LISTP(LST)
GO TO 5505
172 CALL JUGGLE
272 CALL DPYNEW
IF(JA.EQ.22)GO TO 424
C FOR MOVING DIRECTLY TO NEW ITEM IN EDIT MODE.
IF(ZERO)GO TO 55
X22=ZERO
ZERO=-1
IF(JA.EQ.55)GO TO 554
IF(JA.EQ.44)GO TO 44
IF(KED.NE.0)GO TO 244
GO TO 425
C 55,POS -- SETS UP ALIGNMENT
554 CALL BOX(-1,RJB,STFF)
IF(JD.EQ.0)KED=-1
RITEM=RJD
C FOR 'ED POS., STF., CODE#'
IF(JC.GT.4)KED=-2
RLINE=RJB
RJB=RJC
GO TO 45
C '22,0' EDITS LAST ITEM ENTERED
42 IF(RJB.NE.0)GO TO 242
X22=ITEM
GO TO 429
44 KED=1
RITEM=RJC
C 'ST', STF#, CODE# (IF 0, ALL ITEMS COME UP)
45 REDIT=RJB
C THE STAFF #
JED=1
244 X=ITEM
IF(JED.GT.X)GO TO 444
DO 144 K=JED,X
L=PWDS(K)
IF(KED.EQ.-2)GO TO 654
C -2 LOOKS AT ALL ITEMS NEAR VERT. LINE, -1 ON SINGLE STAFF.
IF(RN(L+3).NE.REDIT)GO TO 144
IF(KED)GO TO 654
IF(RITEM.NE.0.AND.RITEM.NE.RN(L+1))GO TO 144
IF(JA.NE.55)GO TO 344
654 IF(ABS(RLINE-RN(L+2)).LT.5.0)GO TO 344
144 CONTINUE
444 REDIT=999.
C NO MORE ON LINE
RJB=0
C SO IT WILL RETURN IF NOTHING IS FOUND WITH 'ED' OR 'ST'.
GO TO 73
344 JED=K+1
C FOR NEXT TIME AROUND
X22=K
GO TO 429
C CR MOVES ALONG GIVEN LINE, 222 LEAVES THIS MODE
91 CALL ACCPOG(1)
IF(I.EQ.IX)ITEM=ITEM-1
GO TO 142
242 IF(X22.GT.0)GO TO 5511
142 IF(RJB.NE.0)GO TO 424
IF(REDIT.NE.999..AND.JA.GE.0)GO TO 244
X22=X22+1
IF(JA)X22=X22-1+JA
IF(X22.LT.1)X22=1
GO TO 425
424 X22=RJB
425 IF(X22.GT.ITEM)GO TO 73
C LEAVES EDIT MODE.
429 IX=I
MEDIT=PWDS(X22)
J=2
426 Y=RN(MEDIT)+J
CALL LOOP(0,Y,1,I,MEDIT,RN)
JJA=RN(I+1)
YED=Y-2
L=I+2
DO 422 K=1,11
IF(K.GT.YED)GO TO 423
RJJ(K)=RN(L+K)
GO TO 422
423 RJJ(K)=0
422 CONTINUE
RJJB=RN(L)
IF(GO.GT.0)GO TO 4231
C NO BOX WHEN IN GROUP EDIT ROUTINE
IBOX=I
RBOX=RJJ(1)
CALL BOX(IBOX,RBOX,STFF)
4231 ITEM=ITEM+1
ST2=WDS(ITEM)
GO TO 55
427 FORMAT(1XA5/,F4.0,F7.2,F6.2,$)
4271 FORMAT('+ (',I2,')',F7.2,$)
C FOR EDITING
5511 IF(JA.EQ.55)GO TO 420
220 IF(JA.NE.22)GO TO 720
C 'I, #' WILL MOVE TO ANOTHER ITEM WHEN ALREADY IN EDIT MODE.
KED=0
JED=0
GO TO 72
720 IF(JA.EQ.44)GO TO 420
IF(JA.EQ.33)GO TO 33
IF(JA.GT.13.OR.JA.EQ.1)GO TO 5505
C PARAM NUM TOO HIGH?
C LOOKS FOR NEXT ITEM TO EDIT IF <CR>
4221 IF(X22.EQ.0.OR.RJB.NE.0)GO TO 5517
C BACKS UP WHEN IN EDIT MODE.
IF(JA.GT.0)GO TO 5518
IF(I.EQ.IX)GO TO 91
ZERO=X22+1
C '0' AFTER AN EDIT ENDS THE EDIT AND GETS NEXT ITEM FOR EDIT.
72 IF(X22.EQ.0)GO TO 55
IF(KED.EQ.0)REDIT=999.
320 IF(I.NE.IX)GO TO 172
ITEM=ITEM-1
C TO DELETE AN ITEM
73 X22=0
CALL DPYNEW
IF(REDIT.EQ.999.)GO TO 441
IF(JA.EQ.55)GO TO 554
IF(JA.EQ.44)GO TO 44
441 IF(RJB.EQ.0.OR.RJB.GT.ITEM)GO TO 55
GO TO 424
C DELETION IN EDIT MODE DOES NOT LEAVE MODE.
5517 IF(JA.EQ.0)GO TO 6221
5518 IF(JA.EQ.2)GO TO 7221
IF(JA.GE.22)GO TO 55
RJJ(JA-2)=RJB
RJB=RJJB
GO TO 6222
7555 CALL MOVER
IF(RJC.EQ.99)GO TO 5504
C 99=BACKUP OUT OF MOVER ETC.
8853 IF(JJB)GO TO 57
M=PWDS(JJB)
I=PWDS(ITEM+1)
ITEM=JJB-1
ST2=WDS(JJB)
C SO IT DOESN'T HAVE TO GO THROUGH ALL ITEMS
GO TO 8852
8851 IF(I1.NE.IP)GO TO 85
GO TO 6531
420 REDIT=0
211 IF(RJB.NE.0)GO TO 320
IF(KED.GE.0)RLINE=RJJB
RJB=RLINE
C FOR '55' ALIGNING
7221 RJJB=RJB
6222 IF(JQ(1).EQ.0)GO TO 6221
C ARRAYS NEED 2O LOCATIONS HERE.
C CHNG PARAMS WITH PAIRS OF NUMS.(EG. 2,122 4,13 5,-2 ETC.)
DO 1222 K=1,20,2
L=JQ(K)
IF(L-2)6221,2222,3222
3222 RJJ(L-2)=RJQ(K+1)
GO TO 1222
2222 RJJB=RJQ(K+1)
RJB=RJJB
1222 CONTINUE
C*** LOOP SET TO 10 (20 IN ARRAY!)
6221 DO 5514 K=1,11
RJQ(K)=RJJ(K)
5514 JQ(K)=RJQ(K)
JA=JJA
ITEM=ITEM-1
IF(ITEM)ITEM=0
ST2=WDS(ITEM+1)
I=PWDS(ITEM+1)
CALL DPYNEW
60 IF(DP(JC))GO TO 57
RSTJC=RSTFAC(JC+4)
RD=0
IF(JA.EQ.50)JA=16
C ABOVE SHOULD BE TAKEN OUT AT SOME FUTURE DATE. (12/73)
IF(RJB.LT.1000)GO TO 66
RD=RJB
IF(JA.EQ.8)RJM=RJB/1000.
CALL RNOTE(RJB)
C IF RJB>1000 IT FINDS TRUE RJB THROUGH NOTE NUMB.
66 IF(EDX.EQ.0.OR.I1.EQ.IP)GO TO 5541
RJJB=RJB
JJA=JA
IF(JA.NE.16.OR.RJI.EQ.0)GO TO 160
CC360 RJI=0
RJB=RN(IFIX(PWDS(X22-1))+2)+39.6*RSTJC*RJE
C PUTS 13TH(+) LETTER TIN RIGHT POS. AFTER HORIZ. MOVE.
160 IF(JA.EQ.1.AND.RJH.EQ.0)RJH=999.
C 999=0 FOR STEM EXTENSIONS.
CNT=1
DO 5543 K=1,9
C 10/6/73 ABOVE WAS ,11
RA=RJQ(K)
IF(RA.NE.0)CNT=K
5543 RJJ(K)=RA
C USES ONLY 10 PARAMETERS BEYOND JA, JB
2554 IF(PLT.NE.0)GO TO 5541
IF(JA.EQ.9)CALL HOMER
IF(JA.NE.6)GO TO 1261
IF(JF.NE.0)RJM=-1
1261 IF(RJM.NE.0)CALL HOMER
C IF P13≠0 ANY ITEM WILL LINE UP WITH ANY OTHER ITEM. P13 IS RESET=0
C **** FOR '0' EDITS ******
261 RN(I)=CNT
RN(I+1)=JA
I=I+2
RN(I)=RJB
IF(RD.NE.0)RN(I)=RD
C TO SAVE NOTE NUMBS IN P2.
DO 4554 K=1,CNT
4554 RN(I+K)=RJQ(K)
3554 I=CNT+1+I
C WHAT ABOUT EDITS?*******
5541 POS=STFF(JC+4)
JB=RHORZ(RJB)
C LINE IS DIVIDED INTO 200 POINTS.
CENTR=POS
551 IF(JA.EQ.4.OR.JA.EQ.10)GO TO 25
IF(JA.EQ.7)GO TO 81
IF(JA.LE.12.OR.JA.EQ.30)GO TO 11
IF(JA.EQ.18)GO TO 80
IF(JA.NE.88)GO TO 116
IF(RJB.EQ.0)RJB=1
C USE ONLY ONE 88 CHANGE PER STAFF!!!! ********
RSTFAC(JC+4)=RJB
C 88,FAC,STF SETS STAFF SIZE FACTOR(ALSO CAN BE DONE WITH 10)
GO TO 57
116 IF(JA.NE.16.AND.JA.NE.20)GO TO 120
CALL ALPHA
GO TO 57
81 CALL KSIG
GO TO 57
80 CALL METER
GO TO 57
61 CALL HOMER
GO TO 8853
25 CALL ITMSUB
C BAR LINES, BEAMS, STAFF LINES ****
GO TO 57
C TO GET DISPLAY: 'G'; 'GM' ADDS TO DPY;
120 IF(I.NE.1.AND.I2.NE.IM)GO TO 5505
C 'GM'=GET MORE
TYPE 21
ACCEPT FA5,NAME
IF(NAME.EQ.'99')GO TO 5505
IF(NAME.NE.IBL.AND.LOOKD(NAME).EQ.0)GO TO 120
C FUNC. LOOKD IS 'FAIL' PROG. TO CHECK ON LOOKUPS
3005 REWIND 21
C GUARDS AGAINST LOSSAGE!
PLOTIT=-1
IF(I1.NE.'G')PLOTIT=-2
2005 IF(NAME.EQ.IBL)GO TO 2200
CALL IFILE(21,NAME)
C JUMP TO READ BIG FILES
2200 J=ITEM+1
2202 READ(21,END=2207),X,Y,
1 (PWDS(K),K=J,X+J),(RN(K),K=I,Y+I-2),ISCR,(V(K),K=1,ISCR),
1 LCNT,(LIST(K),K=1,LCNT)
CC PUT IN NEXT YEAR(12/73)1 LCNT,(LIST(K),K=1,LCNT),RSTFAC,STFF
2207 IF(Y.EQ.0)GO TO 2205
ITEM=ITEM+X
IF(I2.EQ.IM)GO TO 2203
I=Y
READ(21,END=8851),RSTFAC,STFF
IF(I1.EQ.IP)GO TO 6531
READ(21,END=8851),ST2,(ST(K),K=1,ST2+2),(WDS(K),K=1,ITEM+1)
CALL DPYNEW
GO TO 5505
2205 TYPE 2206
CALL EXIT
2206 FORMAT(' **** UNPACK IT! ****')
2203 RA=I-1
DO 2204 K=J,J+X
2204 PWDS(K)=PWDS(K)+RA
GO TO 85
121 IF(PLOTIT.EQ.0)GO TO 5504
5121 CALL PLTSRT
C IF P5=0 MOVES UP AT START, IF P6=0 MOVES UP AT END.
PLT=-1-JH
C (JH) P8=1 OR 2 FOR 2-PASS PLOTS
M=I
I=I+M-1
IF(RJB.EQ.0)RJB=1.
DIS=RJB*1.24
IF(RJC.EQ.0)RJC=RJB
RHT=RJC*1.2
C 1.24 AND 1.2 ARE TO FIT 8 1/2 X 11 FORMAT
BOT=-BOT*RHT
IF(TOP2.EQ.-999)GO TO 8121
BOT=BOT+TOP2
GO TO 9121
8121 CALL PLOTS(K)
RXGP=995.-BOT
9121 NOMOVE=RJF+RJG*148.*RJC
C RJF=1 FOR NO MOVE AT END. RJG=# OF STAVES TO MOVE FOR NEW STAFF 0.
IXGP=JD
C (JD) P4=1 FOR XGP OUTPUT
IF(JE.NE.0)GO TO 1122
IF(RJD.EQ.0)GO TO 6121
IF(TOP2.NE.-999)RXGP=RXGP-BOT
C MOVES 0 POINT OVER EACH TIME.
GO TO 1122
6121 CALL PLOT(0,BOT,-3)
C MOVES PLOTTER UP IF P5=0.
1122 X22=IXGP
C NEXT RUNS THROUGH DATA WITH NEW CHANGES.
6120 IF(M.GE.I)GO TO 7120
CNT=RN(M)
C CLEARS INPUT ARRAY, USES ONLY 12 PARAMS.
DO 6220 K=CNT+1,10
JQ(K)=0
6220 RJQ(K)=0
JA=RN(M+1)
M=M+2
RJB=RN(M)
DO 9120 K=1,CNT
RJQ(K)=RN(M+K)
9120 JQ(K)=RJQ(K)
M=CNT+M+1
IF(EDX.LE.0)GO TO 60
GO TO 5505
7120 M=1
IF(EDX)GO TO 71201
IF(PLT.EQ.1)EDX=-1
PLT=0
C RETURNS FOR 'SL'=SAVE LAST
GO TO 5505
71201 X=50*RHT
TOP=TOP*RHT+X
IF(NOMOVE.NE.0)TOP=0
IF(NOMOVE.GT.1)TOP=NOMOVE
IF(IXGP.EQ.0)CALL PLOT(0,TOP,3)
TOP2=TOP
GO TO 2
C TO MOVE 'PLOTTER' FOR XGP OUTPUT
CC7121 CALL PLOT(0,TOP,3)
C MOVES PLOTTER UP
C ALWAYS START PLOT WITH BOTTOM UNIT ON PAGE AND WORK UP.
CC TOP2=TOP
CC GO TO 2
56 FORMAT(/1XA5,' TYPE FOR ITEM #',I3,I/)
1 FORMAT(I,24F)
21 FORMAT(' FILE NAME?'/)
END